	
			Вариант 1 (199? год)

	1.  Указать значение регистра AL после выполнения следующих команд :
		MOV AL, 131
		ADD AL, 50
		JL M1
		MOV AL, 1
		JMP M2
	    M1: MOV AL, 0
	    M2:

	2.  Имеется описание массива Y [0..55] из чисел без знака :
		Y DB 56 DUP(?)
	    и пусть в регистре BX находится некоторое число k (0<= k <= 45).
	    выпишите команды (не более 4), реализующие переход по метке M 
	    при выполнении условия
		Y[k + 10] < k + Y[10]

	3.  Вычеркните неправильные адресные выражения :
		X[0], SI + 2, X[DI] + 4, [BX] + X + [BP], X[CX], 
		[X + 2] + [BP + SI], [BX],
	    где X имя переменной X DW ?

	4.  Выпишите команды (без строковых команд и индексов повторения),
	    выполняющие то же действие, что и 
		REP MOVSB.
	
	5.  В стеке записано не менее 10 слов, причем десятое (сверху) из 
	    них - это адрес (смещение) некоторого байта из сегмента памяти,
	    на начало которого указывает регистр ES. Выпишите команды,
	    которые записывают 0 в этот байт и при этом сохраняют значения 
	    всех регистров и не используют переменные.

	6.  Выписать таблицу общих имен (ТОБЩ) и таблицу перемещаемых адресов
	    (ТПА), которые построит ассемблер при трансляции следующего 
	    модуля :
		PUBLIC X, Y
	    Q	SEGMENT
	    X	DW 2 DUP(Q)
	    Y	DW Z, Q
	    Z	DB ?
	    Q	ENDS
		END

	7.  Укажите ошибку, которую зафиксирует ассемблер при трансляции :
	    C	SEGMENT
		ASSUME CS:C
	    X	DW 1
	    BE: MOV AX, Y
		ADD AX, X
	    Y DW 2
	    C ENDS
	    как ее можно исправить ?

	8.  В арифметических командах ЭВМ (УМ-С) не указывается ни одного
	    адреса. Как в этих командах определяются операнды. 



			Вариант 2 (199? год)

	1.  Сравните одноадресную (УМ - 1) и стековую (УМ - С) ЭВМ по следующим 
	    критериям : удобство программирования, быстродействие и размер 
	    памяти, занимаемой эквивалентными программами.

	2.  Выпишите значение регистра AL (HEX), и флаги CF, OF, ZF и SF после 
	    выполнения следующих команд : 
		MOV AL, 20
		ADD AL, 120
	
	3.  Имеется описание массива X[0..99] :
		X DB 100 DUP(?)
	    и пусть в регистре DI находится некоторое число i (0<=i<=99). Выпишите 
	    команды (не более 4), реализующие присваивание
		x[24] := x[i] + i

	4.  При следующих значениях регистров
		DS = 2222h, ES = 3333h, SS = 4444h, CS = 5555h, SI = 0F00Fh
	    определите абсолютный адрес первого операнда команды
		SUB [SI + 3030h], AH
	    
	5.  Вычеркните неправильные адресные выражения :
		4[BH], [DI + Y + 2], 6[Y], Y[DI][SI], [SI] + Y[BX], [BP] + [DI],
		BX[SI]

	6.  Выпишите команды (с командой CMPSB, но без префиксов повторения),
	    выполняющие то же действие, что и
		REPE CMPSB

	7.  В стеке записано не менее 2х слов. Выпишите команды, которые меняют 
	    местами два верхних слова стека и при этом сохраняют значения всех 
            регистров и не используют переменные.

	8.  Предположим, вашей программе приходится несколько раз проверять,
	    принадлежат ли значения символьных переменных каким либо диапазонам
	    символов (например : X - цифра?, Y - малая лат. буква?). Как вы 
	    Опишете это повторяющееся действие - как макрос или как процедуру?

	9.  Выпишите макрорасширениедля макрокоманды M1 2 при следующем описании
	    макроса M1 :
	    M1 	MACRO K
		JMP W&K
		IF K + 1 EQ 3
	     X  DB '&K + 1'
		ELSE
	    W2  MOV BX, K&K
		ENDIF

			Вариант 3 (199? год)

	1. Указать значение регистра AL после выполнения следующих команд:
        	MOV AL, 131
	   	SUB AL, 50
		JGE M1
		MOV AL, 10
		JMP M2
	   M1:	MOV AL, 20
	   M2:

	2. Имеется описание массива X[-10..10]:
		X DW 21 dup (?)
	   и пусть в регистре DI находится некоторое число i (0<=i<=10).
	   Выпишите команды (не более четырех), реализующие присваивание 
	   x[i]:=x[0]+i. Можно изменять значение любых регистров.

	3. Вычеркните неправильные адресные выражения
	   4[BH]  [DI+Y+2]  6[Y]  Y[DI][SI]  [SI]+Y[BX]  [BP]+[DI]  BX[SI]
	   где Y - имя переменной Y DW ...

	4. Выписать таблицу общих имен (ТОБЩ) и таблицу вхождений внешних
	   имен (ТВНЕШ), которые построит ассемблер при трансляции следующего
	   модуля:
		EXTRN P: FAR
		PUBLIC A,C
	   S	SEGMENT
	   A	DB 100H DUP(?)
	   B	DW P
	   C	DW B, SEG P
	   S	ENDS
		END

	5. В стеке записано не менее двух слов. Выпишите команды, которые
	   удаляют из стека второе (сверху) слово, и при этом сохраняют 
	   значения всех регистров (кроме SP) и не используют переменные.

	6. Укажите ошибку, которую зафиксирует ассемблер при трансляции:
	   C	SEGMENT
		ASSUME CS:C
	   X	DW 1
	   BEG: MOV AX, Y
		ADD AX, X
	   Y	DW 2
	   C 	ENDS
	   Как ее можно исправить?

	7. Выпишите команды (без строковых команд и без префиксов 
	   повторения), выполняющие то же действие, что и пара команд
		REP MOVSB,
	   при DF = 0.

	8. В арифметических командах стековой ЭВМ (УМ - С) не указывается 
	   ни одного адреса. Как в этих командах командах определяются 
	   операнды.


		Вариант 4 (199? год)


	1. Пусть в ЭВМ имеется кэш-память, размер которой - 16 блоков по
	   16 машинных слов в каждом и в которой используется алгоритм
	   прямого размещения блоков (содержимое ячеек с шестнадцатеричными 
	   адресами xyzw0, xyzw1, ... xyzwF размещается в блоке с номером w).
	   Пусть на чтение одного слова из кэш-памяти в центральный процессор
	   тратится 1 единица времени, а на чтение одного блока из оперативной
	   памяти в кэш-память - 10 единиц. Считая, что в начале кэш-память
	   была свободной, определить, сколько времени потребуется на чтение 
	   данных, когда в программе последовательно нужны данные из ячеек со
	   следующими 16-ричными адресами:
		5F045, B082A, 67049, B0870, B0821, 5F046, B0820, 5F04E

	2. Считая, что перед выполнением команды PUSH 8[BX+DI] регистры имели
	   следующие значения:
		DS=1234h, SS=0f900h, SP=7052h, BX=9999h, DI=6666h
	   Указать в 16-ричном виде абсолютные адреса ячеек "откуда" и "куда"
	   переписывает данная команда слово.

	3. Из указанных команд вычеркнуть те, что записаны с ошибкой
		PUSH CS         MOV ES, DS          ADD [SI], 5
		LEA AX,[BX]     XCHG [SI],[SI+3]    MUL 10

	4. Ответить на следующе 2 вопроса: на каком проходе и как именно
	   ассемблер выявляет ошибку "повторное описание имени" (одно
	   и то же имя описано дважды) ?

	5. Выписать таблицу общих имен (ТОБЩ) и таблицу перемещаемых адресов
	   (ТПА), которые построит ассемблер при трансляции следующего 
	   модуля :
		PUBLIC X, Y
	   Q	SEGMENT
	   X	DW 2 DUP(Q)
	   Y	DW Z, Q
	   Z	DB ?
	   Q 	ENDS
		END

	6. Выписать команды (с командой CMPSB, но без префиксов повторения),
	   выполняющие то же действие, что и пара команд 
		REPE CMPSB.
	   Можно использовать регистр AL в качестве вспомогательного.

	7. При следующих значения регистров
		DS = 2222h  ES = 3333h  CS = 5555h  SI = 0F00Fh
	   Определить абсолютный (20 - разрядный) адрес 1-го операнда команды
		SUB [SI+3030h], AH
	   Указать формулу вычисления этого адреса.



